package com.zenithmind.mall.pojo.dto;

import lombok.Data;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.DecimalMin;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 百亿补贴活动DTO
 * 
 * @author ZenithMind Team
 * @since 2025-07-03
 */
@Data
public class SubsidyActivityDTO {

    /**
     * 活动名称
     */
    @NotBlank(message = "活动名称不能为空")
    private String name;

    /**
     * 活动描述
     */
    private String description;

    /**
     * 活动开始时间
     */
    @NotNull(message = "活动开始时间不能为空")
    private LocalDateTime startTime;

    /**
     * 活动结束时间
     */
    @NotNull(message = "活动结束时间不能为空")
    private LocalDateTime endTime;

    /**
     * 补贴类型
     */
    @NotNull(message = "补贴类型不能为空")
    private Integer subsidyType;

    /**
     * 补贴金额
     */
    @DecimalMin(value = "0.01", message = "补贴金额必须大于0")
    private BigDecimal subsidyAmount;

    /**
     * 补贴比例
     */
    private BigDecimal subsidyRate;

    /**
     * 最大补贴金额
     */
    private BigDecimal maxSubsidyAmount;

    /**
     * 最小订单金额
     */
    private BigDecimal minOrderAmount;

    /**
     * 总补贴预算
     */
    @DecimalMin(value = "0.01", message = "总补贴预算必须大于0")
    private BigDecimal totalBudget;

    /**
     * 每日补贴预算
     */
    private BigDecimal dailyBudget;

    /**
     * 每用户最大补贴金额
     */
    private BigDecimal maxUserSubsidy;

    /**
     * 参与用户等级要求
     */
    private String userLevelRequirement;

    /**
     * 适用商品分类
     */
    private String applicableCategories;

    /**
     * 适用商品品牌
     */
    private String applicableBrands;

    /**
     * 排除商品列表
     */
    private String excludedProducts;

    /**
     * 活动优先级
     */
    private Integer priority;

    /**
     * 是否启用
     */
    private Integer enabled;

    /**
     * 活动规则说明
     */
    private String rules;

    /**
     * 活动横幅图片
     */
    private String bannerImage;
}
